package map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
 * 此类使用于验证遍历map的测试demo
 * /**
 *  * Map的遍历，支持三种方式:
 *  * 1.遍历所有的key
 *  * 2.遍历所有的value
 *  * 3.遍历所有的Entry(键值对)
 *
 */
public class MapDemo3 {
    public static void main(String[] args) {
        //创建一个集合
        Map<String,Integer> map = new HashMap<>();
        map.put("语文", 99);
        map.put("数学", 100);
        map.put("英语", 88);
        map.put("物理", 96);
        map.put("化学", 99);
        System.out.println(map);    //{物理=80, 数学=98, 化学=99, 语文=99, 英语=88}
        /*
        遍历所有的key
        Set<K> keySet()
        将当前map中所有的key以一个Set集合的形式返回
         */
        Set<String> set = map.keySet();         //获取集合中的所有key，并且复制给keySet
        //使用新循环遍历所有key
        for (String e : set) {
            System.out.println("key: " + e);
        }
        /*
        遍历所有value
        Collection<V>value()
        将当前map中的所有value以一个集合的形式返回
         */
        Collection<Integer> values = map.values();     //取出所有value
        //使用新循环遍历values中的元素
        for (Integer value : values) {
            System.out.println("value: " + value);
        }
         /*
         遍历所有的Entry(键值对)
         Set<Map.Entry<String,Integer>> entrySet()
         将当前map中的第一组键值对以一个Entry实例表示，并将所有键值对以Set集合返回
         */

        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();//获取map中所有键值对并复制给entrySet
        //使用新循环遍历集合entrySet
        for (Map.Entry<String, Integer> entry : entrySet) {
            String key = entry.getKey();                //获取每个键值对中的key
            Integer value = entry.getValue();           //获取每个键值对中的value
            System.out.println("key: " + key + ", value: " + value);
        }


    }
}
